package sms;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


/**
 * 用于展示学生信息的面板
 */
public class b extends JFrame{
	JFrame f;;  //设置输入界面框架JFrame的标题
	JPanel pInput = new JPanel();  //在输入界面上增加一个平板容器JPanel
	JLabel xuehao = new JLabel("学号");//创建一个标签
	JLabel xueshengxm = new JLabel("学生姓名");
	JLabel yuwen = new JLabel("语文成绩");
	JLabel shuxue = new JLabel("数学成绩");
	JLabel jisuanji = new JLabel("计算机成绩");
	JLabel average = new JLabel("平均成绩");


	/**
	 * 展示所有学生信息时比较特殊，有效元素从下标1开始
	 * @param keji
	 */
	public b(Student []  keji) {
		f = new JFrame("展示学生信息");
		f.setSize(500, 300); //设置输入界面的大小尺寸
		f.setLocation(200, 200); //设置输入界面的位置值
		f.setLayout(new GridLayout(keji.length,5));  //设置布局为网格布局
		f.add(xuehao);
		f.add(xueshengxm);
		f.add(yuwen);
		f.add(shuxue);
		f.add(jisuanji);
		f.add(average);
		//把上面的组件都添加到平板容器JPanel中去
		//pInput.add(xuesheng);
		//设置框架JFrame可见

		// 获取排序后的学生数组
		Student[] suts = this.sort_keji(keji);

		// 按照平均分降序显示
		for(int i = 0; i < suts.length; i++) {
			// 显示学号
			JTextField x_xuehao = new JTextField();
			x_xuehao.setText(String.valueOf(suts[i].get_xuehao()));

			// 显示姓名
			JTextField x_name = new JTextField();
			x_name.setText(suts[i].get_per_name());

			// 显示 各科成绩
			JTextField x_yuwen = new JTextField();
			x_yuwen.setText(String.valueOf(suts[i].get_yuwen()));
			JTextField x_shuxue = new JTextField();
			x_shuxue.setText(String.valueOf(suts[i].get_shuxue()));
			JTextField x_jsj = new JTextField();
			x_jsj.setText(String.valueOf(suts[i].get_jisuanji()));

			// 显示平均成绩 并且只显示2位小数
			JTextField x_avg = new JTextField();
			String[] avg_arr = String.valueOf(suts[i].get_average()).split("\\.");
			String avg = avg_arr[0] + "." + avg_arr[1].substring(0, 2);
			x_avg.setText(avg);
			f.add(x_xuehao);
			f.add(x_name);
			f.add(x_yuwen);
			f.add(x_shuxue);
			f.add(x_jsj);
			f.add(x_avg);
		}
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //点击关闭框架JFrame的关闭按钮的时候自动退出
		f.setVisible(true);
	}


	/**
	 * 显示学生信息，有效元素从下标0开始
	 * @param keji
	 * @param title
	 */
	public b(Student []  keji, String title) {
		f = new JFrame(title);
		f.setSize(500, 300); //设置输入界面的大小尺寸
		f.setLocation(200, 200); //设置输入界面的位置值
		f.setLayout(new GridLayout(keji.length + 1,5));  //设置布局为网格布局
		f.add(xuehao);
		f.add(xueshengxm);
		f.add(yuwen);
		f.add(shuxue);
		f.add(jisuanji);
		f.add(average);

		// 按照平均分降序显示
		for(int i = 0; i < keji.length; i++) {
			// 显示学号
			JTextField x_xuehao = new JTextField();
			x_xuehao.setText(String.valueOf(keji[i].get_xuehao()));

			// 显示姓名
			JTextField x_name = new JTextField();
			x_name.setText(keji[i].get_per_name());

			// 显示 各科成绩
			JTextField x_yuwen = new JTextField();
			x_yuwen.setText(String.valueOf(keji[i].get_yuwen()));
			JTextField x_shuxue = new JTextField();
			x_shuxue.setText(String.valueOf(keji[i].get_shuxue()));
			JTextField x_jsj = new JTextField();
			x_jsj.setText(String.valueOf(keji[i].get_jisuanji()));

			// 显示平均成绩 并且只显示2位小数
			JTextField x_avg = new JTextField();
			String[] avg_arr = String.valueOf(keji[i].get_average()).split("\\.");
			String avg = avg_arr[0] + "." + avg_arr[1].substring(0, 2);
			x_avg.setText(avg);
			f.add(x_xuehao);
			f.add(x_name);
			f.add(x_yuwen);
			f.add(x_shuxue);
			f.add(x_jsj);
			f.add(x_avg);
		}
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //点击关闭框架JFrame的关闭按钮的时候自动退出
		f.setVisible(true);
	}

	/**
	 * @author 王君豪
	 * @description 对传入的学生信息按照平均分降序排列
	 * @param stus
	 */
	private Student[] sort_keji(Student[] stus){
		Student stu;
		Student[] s = new Student[stus.length - 1];
		for (int i = 1; i < stus.length; i++){
			s[i-1] = stus[i];
		}

		for (int i = 0; i < s.length - 1; i++){
			for (int j = 0; j < s.length - i -1 ; j ++){
				if (s[j].get_average() < s[j+1].get_average()){
					stu = s[j];
					s[j] = s[j+1];
					s[j+1] = stu;
				}
			}
		}
		return s;
	}


}
